<?php


namespace App\Libs\Contracts\Push\Xm;


use App\Models\User;
use xmpush\Builder;
use xmpush\Constants;
use xmpush\Sender;
use xmpush\TargetedMessage;

include_once(dirname(__FILE__) . '/autoload.php');

class XmpushService
{

    private $secret = 'GyTup0fgPLMBN4ltlTqiIQ==';

    private $package = 'com.qddds.app';


    public function push($title, $content, $userId)
    {
        Constants::setPackage($this->package);
        Constants::setSecret($this->secret);
        if ($userId) {
            $user = User::find($userId);
            if ($user['pushType'] == "XM") {
                if ($user['type'] == "ANDROID") {
                    \Log::info("小米推送");
                    $sender = new Sender();
                    $message1 = new Builder();
                    $message1->title($title);  // 通知栏的title
                    $message1->description($content); // 通知栏的descption
                    $message1->passThrough(0);  // 这是一条通知栏消息，如果需要透传，把这个参数设置成1,同时去掉title和descption两个参数
                    // $message1->payload($payload); // 携带的数据，点击后将会通过客户端的receiver中的onReceiveMessage方法传入。
                    $message1->extra(Builder::notifyForeground, 1); // 应用在前台是否展示通知，如果不希望应用在前台时候弹出通知，则设置这个参数为0
                    $message1->notifyId(2); // 通知类型。最多支持0-4 5个取值范围，同样的类型的通知会互相覆盖，不同类型可以在通知栏并存
                    $message1->build();
                    $targetMessage = new TargetedMessage();
                    $targetMessage->setTarget('regID', TargetedMessage::TARGET_TYPE_REGID); // 设置发送目标。可通过regID,alias和topic三种方式发送
                    $targetMessage->setMessage($message1);
                    $status = $sender->sendToIds($message1, [$user['registrationId']])->getRaw();
                    \Log::info($status);
                    return true;
                }
            }
        } else {
            \Log::info("小米推送");
            $sender = new Sender();
            $message1 = new Builder();
            $message1->title($title);  // 通知栏的title
            $message1->description($content); // 通知栏的descption
            $message1->passThrough(0);  // 这是一条通知栏消息，如果需要透传，把这个参数设置成1,同时去掉title和descption两个参数
            // $message1->payload($payload); // 携带的数据，点击后将会通过客户端的receiver中的onReceiveMessage方法传入。
            $message1->extra(Builder::notifyForeground, 1); // 应用在前台是否展示通知，如果不希望应用在前台时候弹出通知，则设置这个参数为0
            $message1->notifyId(2); // 通知类型。最多支持0-4 5个取值范围，同样的类型的通知会互相覆盖，不同类型可以在通知栏并存
            $message1->build();
            $targetMessage = new TargetedMessage();
            $targetMessage->setMessage($message1);
            $status = $sender->broadcastAll($message1)->getRaw();
            \Log::info($status);
            return true;
        }


    }
}